package pe.com.ztaxi.taxis.service.impl;

import java.util.Date;
import java.util.List;

import javax.annotation.Resource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import pe.com.ztaxi.taxis.dao.EmpresaDAO;
import pe.com.ztaxi.taxis.dao.UsuarioDAO;
import pe.com.ztaxi.taxis.model.Empresa;
import pe.com.ztaxi.taxis.service.EmpresaService;

@Service
public class EmpresaServiceImpl implements EmpresaService {

	private static final Logger LOGGER = LoggerFactory
			.getLogger(EmpresaServiceImpl.class);
	
	final long MILLSECS_POR_MES = 2592000000l; 

	@Resource
	private UsuarioDAO usuarioDAO;
	
	@Resource
	private EmpresaDAO empresaDAO;

	public boolean tieneDerechoCredito(Empresa empresa){
		LOGGER.debug("Validando derecho a credito");
		if(empresa.getTipoPago().equals("Credito")){
			Date fechaHoy = new Date();
			if(empresa.getTotalCredito() <= empresa.getTotalPagadoCredito() || (fechaHoy.getTime() - empresa.getUltimaFechaCierre().getTime() < (MILLSECS_POR_MES * 2))){
				return true;
			} else {
				return false;
			}
		} else {
			return false;
		}
	}
	
	@Transactional(readOnly = true)
	public Empresa buscarPorId(Integer idEmpresa){
		return empresaDAO.findOne(idEmpresa);
	}
	
	@Transactional(readOnly = true)
	public List<Empresa> buscarTodas(){
		return empresaDAO.findAll();
	}
}
